package com.lionel.aqs;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@Slf4j
public class CountDownLatchExample2 {
    private final static int ThreadCount = 200;
    public static void main(String[] args) throws Exception{
        final CountDownLatch countDownLatch = new CountDownLatch(ThreadCount);
        ExecutorService exec = Executors.newCachedThreadPool();
        for (int i = 0;i<ThreadCount;i++){
            int threadNum = i;
            exec.execute(()->{
                try {
                    test(threadNum);
                } catch (Exception e) {
                    log.error("exception",e);
                }finally {
                    countDownLatch.countDown();
                }
            });
        }
        countDownLatch.await(10, TimeUnit.MICROSECONDS);
        log.info("finish");
    }
    private static void test(int threadNum) throws Exception {
        Thread.sleep(100);
        log.info("{}",threadNum);
    }
}
